Skip to content
This repository was archived by the owner on Apr 3, 2026. It is now read-only.

Commit 6d8ff44

Browse files
committed
chore: merge history from airdrops repository
This merge incorporates the full commit history from the airdrops repository while preserving all commit metadata (authors, timestamps). All files have been moved to the airdrops/ subdirectory. Source: https://github.com/sablier-labs/airdrops.git # Conflicts: # airdrops/bun.lock # airdrops/foundry.toml # airdrops/justfile # airdrops/package.json # airdrops/tests/.solhint.json
2 parents b5723bd + 54e2d9c commit 6d8ff44

25 files changed

Lines changed: 1091 additions & 0 deletions

airdrops/.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# EditorConfig http://EditorConfig.org
2+
3+
# top-most EditorConfig file
4+
root = true
5+
6+
# All files
7+
[*]
8+
charset = utf-8
9+
end_of_line = lf
10+
indent_size = 2
11+
indent_style = space
12+
insert_final_newline = true
13+
trim_trailing_whitespace = true
14+
15+
[*.sol]
16+
indent_size = 4
17+
18+
[*.tree]
19+
indent_size = 1

airdrops/.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ETH_FROM="YOUR_DEPLOYER_ADDRESS"
2+
FOUNDRY_PROFILE="lite"
3+
MNEMONIC="YOUR_MNEMONIC"
4+
ROUTEMESH_API_KEY="YOUR_API_KEY" # Get yours from https://routeme.sh/
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: "CI Deep"
2+
3+
on:
4+
schedule:
5+
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
6+
workflow_dispatch:
7+
inputs:
8+
unitFuzzRuns:
9+
default: "50000"
10+
description: "Unit: number of fuzz runs."
11+
required: false
12+
integrationFuzzRuns:
13+
default: "50000"
14+
description: "Integration: number of fuzz runs."
15+
required: false
16+
forkFuzzRuns:
17+
default: "1000"
18+
description: "Fork: number of fuzz runs."
19+
required: false
20+
21+
jobs:
22+
check:
23+
uses: "sablier-labs/gha-utils/.github/workflows/full-check.yml@main"
24+
25+
build:
26+
uses: "sablier-labs/gha-utils/.github/workflows/forge-build.yml@main"
27+
28+
test-integration:
29+
needs: ["build"]
30+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
31+
with:
32+
foundry-fuzz-runs: ${{ fromJSON(inputs.integrationFuzzRuns || '50000') }}
33+
foundry-profile: "test-optimized"
34+
match-path: "tests/integration/**/*.sol"
35+
name: "Integration tests"
36+
37+
test-fork:
38+
needs: ["build"]
39+
secrets:
40+
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
41+
ROUTEMESH_API_KEY: ${{ secrets.ROUTEMESH_API_KEY }}
42+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
43+
with:
44+
foundry-fuzz-runs: ${{ fromJSON(inputs.forkFuzzRuns || '1000') }}
45+
foundry-profile: "test-optimized"
46+
match-path: "tests/fork/**/*.sol"
47+
name: "Fork tests"
48+
retry-attempts: 2
49+
50+
notify-on-failure:
51+
if: failure()
52+
needs: ["check", "build", "test-integration", "test-fork"]
53+
runs-on: "ubuntu-latest"
54+
steps:
55+
- name: "Send Slack notification"
56+
uses: "rtCamp/action-slack-notify@v2"
57+
env:
58+
SLACK_CHANNEL: "#ci-notifications"
59+
SLACK_MESSAGE: "CI Workflow failed for ${{ github.repository }} on branch ${{ github.ref }} at job ${{ github.job }}."
60+
SLACK_USERNAME: "GitHub CI"
61+
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: "CI Fork and Util tests"
2+
3+
on:
4+
schedule:
5+
- cron: "0 3 * * 1,3,5" # at 3:00 AM UTC on Monday, Wednesday and Friday
6+
7+
jobs:
8+
check:
9+
uses: "sablier-labs/gha-utils/.github/workflows/full-check.yml@main"
10+
11+
build:
12+
uses: "sablier-labs/gha-utils/.github/workflows/forge-build.yml@main"
13+
14+
test-fork:
15+
needs: ["check", "build"]
16+
secrets:
17+
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
18+
ROUTEMESH_API_KEY: ${{ secrets.ROUTEMESH_API_KEY }}
19+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
20+
with:
21+
foundry-fuzz-runs: 100
22+
foundry-profile: "test-optimized"
23+
fuzz-seed: true
24+
match-path: "tests/fork/**/*.sol"
25+
name: "Fork tests"
26+
retry-attempts: 2
27+
28+
test-utils:
29+
needs: ["build"]
30+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
31+
with:
32+
foundry-profile: "test-optimized"
33+
match-path: "tests/utils/**/*.sol"
34+
name: "Utils tests"
35+
36+
notify-on-failure:
37+
if: failure()
38+
needs: ["check", "build", "test-fork", "test-utils"]
39+
runs-on: "ubuntu-latest"
40+
steps:
41+
- name: "Send Slack notification"
42+
if: failure() # Runs only if a failure occurs in any previous job
43+
uses: "rtCamp/action-slack-notify@v2"
44+
env:
45+
SLACK_CHANNEL: "#ci-notifications"
46+
SLACK_MESSAGE: "CI Workflow failed for ${{ github.repository }} on branch ${{ github.ref }} at job ${{ github.job }}."
47+
SLACK_USERNAME: "GitHub CI"
48+
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: "CI Multibuild"
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
7+
8+
jobs:
9+
multibuild:
10+
runs-on: "ubuntu-latest"
11+
steps:
12+
- name: "Check out the repo"
13+
uses: "actions/checkout@v4"
14+
15+
- name: "Install Bun"
16+
uses: "oven-sh/setup-bun@v2"
17+
with:
18+
bun-version: "latest"
19+
20+
- name: "Install the Node.js dependencies"
21+
run: "bun install --frozen-lockfile"
22+
23+
- name: "Check that the project can be built with multiple Solidity versions"
24+
uses: "PaulRBerg/foundry-multibuild@v1"
25+
with:
26+
min: "0.8.22"
27+
max: "0.8.29"
28+
skip-test: "true"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: "CI Slither"
2+
3+
on:
4+
schedule:
5+
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
6+
7+
jobs:
8+
check:
9+
uses: "sablier-labs/gha-utils/.github/workflows/full-check.yml@main"
10+
11+
slither-analyze:
12+
needs: "check"
13+
uses: "sablier-labs/gha-utils/.github/workflows/slither-analyze.yml@main"

airdrops/.github/workflows/ci.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: "CI"
2+
3+
concurrency:
4+
cancel-in-progress: true
5+
group: ${{github.workflow}}-${{github.ref}}
6+
7+
on:
8+
workflow_dispatch:
9+
pull_request:
10+
push:
11+
branches:
12+
- "main"
13+
- "staging"
14+
15+
jobs:
16+
lint:
17+
uses: "sablier-labs/gha-utils/.github/workflows/full-check.yml@main"
18+
19+
build:
20+
uses: "sablier-labs/gha-utils/.github/workflows/forge-build.yml@main"
21+
22+
test-bulloak:
23+
needs: ["build"]
24+
if: needs.build.outputs.cache-status != 'primary'
25+
uses: "sablier-labs/gha-utils/.github/workflows/bulloak-check.yml@main"
26+
with:
27+
skip-modifiers: true
28+
test-dir: "tests"
29+
30+
test-integration:
31+
needs: ["build"]
32+
if: needs.build.outputs.cache-status != 'primary'
33+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
34+
with:
35+
foundry-fuzz-runs: 2000
36+
foundry-profile: "test-optimized"
37+
match-path: "tests/integration/**/*.sol"
38+
name: "Integration tests"
39+
40+
test-fork:
41+
needs: ["build"]
42+
if: needs.build.outputs.cache-status != 'primary'
43+
secrets:
44+
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
45+
ROUTEMESH_API_KEY: ${{ secrets.ROUTEMESH_API_KEY }}
46+
uses: "sablier-labs/gha-utils/.github/workflows/forge-test.yml@main"
47+
with:
48+
foundry-fuzz-runs: 20
49+
foundry-profile: "test-optimized"
50+
match-path: "tests/fork/**/*.sol"
51+
name: "Fork tests"
52+
53+
coverage:
54+
needs: ["build"]
55+
if: needs.build.outputs.cache-status != 'primary'
56+
secrets:
57+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
58+
uses: "sablier-labs/gha-utils/.github/workflows/forge-coverage.yml@main"
59+
with:
60+
match-path: "tests/integration/**/*.sol"
61+
via-ir-minimum: true
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: "Cron: Close Stale Issues and PRs"
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
7+
8+
jobs:
9+
stale:
10+
uses: "sablier-labs/gha-utils/.github/workflows/cron-stale.yml@main"

airdrops/.gitignore

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# directories
2+
artifacts
3+
artifacts-*
4+
broadcast
5+
cache
6+
cache_hardhat-zk
7+
coverage
8+
deployments
9+
deployments-*
10+
docs
11+
node_modules
12+
out
13+
out-*
14+
repomix
15+
typechain-types
16+
17+
# files
18+
*.env
19+
*.env.deployment
20+
*.log
21+
.DS_Store
22+
.pnp.*
23+
bun.lockb
24+
deployments.md
25+
lcov.info
26+
package-lock.json
27+
pnpm-lock.yaml
28+
yarn.lock

airdrops/.husky/pre-commit

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/bin/sh
2+
bun lint-staged

0 commit comments

Comments
 (0)